home *** CD-ROM | disk | FTP | other *** search
- /*
- * Created by MM LEX (Macintosh) from:
- * "Psycho’s Stuff:Progs:YACCF:YACC Examples:LANDY FOLDER:landy.lxi"
- * Time: Mon Apr 16 19:59:27 1990
- * - for use with standard I/O
- */
-
- #include <stdio.h>
- #include <lex.h>
- #define LL16BIT SHORTINT
- extern SHORTINT _lmovb();
- extern struct lextab *_tabp;
- SHORTINT lexval;
- extern SHORTINT yyline;
- extern char lbuf[], *llend;
-
- # line 9 "Psycho’s Stuff:Progs:YACCF:YACC Examples:LANDY FOLDER:landy.lxi"
-
- #include "stdlib.h" /* Standard C conventions */
- #include "landy.yacc.h" /* %term definitions from YACC, */
- /* i.e. -h output file */
- #ifdef THINK_C
- #define BOOLEAN int /* used on DECUS
- #endif
-
- char yytext[256]; /* Communication with YACC actions */
- int yyival; /* " " " " */
- float yyfval; /* " " " " */
-
- _Alextab(int __na__) /* Action routine */
- {
- switch (__na__)
- {
-
- case 0:
-
- # line 25 "Psycho’s Stuff:Progs:YACCF:YACC Examples:LANDY FOLDER:landy.lxi"
- gettoken(yytext, sizeof(yytext));
- printf("LEX/TCON: %s\n", yytext);
- return(TCON);
- break;
-
- case 1:
-
- # line 29 "Psycho’s Stuff:Progs:YACCF:YACC Examples:LANDY FOLDER:landy.lxi"
- {
- register char *p = yytext; BOOLEAN minus = FALSE;
- gettoken(yytext, sizeof(yytext));
- yyival = 0;
- if(*p == '-') {
- ++p;
- minus = TRUE;
- }
- do {
- if(*p != ',')
- yyival = 10*yyival + (*p - '0');
- } while(*++p);
- if(minus) yyival = -yyival;
- printf("LEX/ICON: %d\n", yyival);
- return(ICON);
- }
- break;
-
- case 2:
-
- # line 46 "Psycho’s Stuff:Progs:YACCF:YACC Examples:LANDY FOLDER:landy.lxi"
- {
- register char *p = yytext; long decimal = 0; BOOLEAN minus = FALSE;
- gettoken(yytext, sizeof(yytext));
- yyfval = 0.0;
- if(*p == '-') {
- ++p;
- minus = TRUE;
- }
- do {
- switch(*p) {
- case ',': break;
- case '.': decimal = 10; break;
- default : if(!decimal) {
- yyfval = 10. * (yyfval) + (*p - '0');
- break;
- } else {
- yyfval = yyfval + (*p - '0')/((float) decimal);
- decimal *= 10;
- break;
- }
- }
- } while (*++p);
- if(minus) yyfval = -yyfval;
- printf("LEX/FCON: %f\n", yyfval);
- return(FCON);
- }
- break;
-
- case 3:
-
- # line 73 "Psycho’s Stuff:Progs:YACCF:YACC Examples:LANDY FOLDER:landy.lxi"
- return(LEXSKIP);
- break;
- }
- return(LEXSKIP);
- }
-
- # line 75 "Psycho’s Stuff:Progs:YACCF:YACC Examples:LANDY FOLDER:landy.lxi"
-
-
- /*
- * Hand-crafted lexgetc to give newline prompt.
- */
-
- lexgetc(){
- static BOOLEAN newline = TRUE;
- register int c;
-
- if(newline)
- printf(">");
-
- if((c = getc(lexin)) == '\n')
- newline = TRUE;
- else
- newline = FALSE;
-
- return(c);
- }
-
- LL16BIT _Flextab[] =
- {
- -1, 3, 3, 2, 2, 1, -1, 0,
- 0, 0, -1,
- };
-
- # line 95 "Psycho’s Stuff:Progs:YACCF:YACC Examples:LANDY FOLDER:landy.lxi"
-
- #define LLTYPE1 unsigned char
-
- LLTYPE1 _Nlextab[] =
- {
- 10, 10, 10, 10, 10, 10, 10, 10,
- 10, 1, 1, 2, 2, 1, 10, 2,
- 10, 10, 10, 10, 10, 10, 10, 10,
- 10, 10, 10, 10, 10, 10, 10, 10,
- 1, 10, 2, 10, 7, 10, 10, 10,
- 10, 10, 10, 10, 10, 6, 3, 6,
- 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 10, 10, 10, 10, 10, 10,
- 10, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 7, 10, 10, 10, 10, 7,
- 10, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 7, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 3, 9, 5,
- 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 10, 8, 8, 8, 8, 8, 8,
- 8, 8, 8, 8, 10, 10, 10, 10,
- 10, 10, 10, 9, 9, 9, 9, 9,
- 9, 9, 9, 9, 9, 9, 9, 9,
- 9, 9, 9, 9, 9, 9, 9, 9,
- 9, 9, 9, 9, 9, 10, 10, 10,
- 10, 9, 10, 9, 9, 9, 9, 9,
- 9, 9, 9, 9, 9, 9, 9, 9,
- 9, 9, 9, 9, 9, 9, 9, 9,
- 9, 9, 9, 9, 9,
- };
-
- LLTYPE1 _Clextab[] =
- {
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 0, 0, 1, 1, 0, -1, 1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- 0, -1, 1, -1, 0, -1, -1, -1,
- -1, -1, -1, -1, -1, 0, 0, 6,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -1, -1, -1, -1, -1, -1,
- -1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -1, -1, -1, -1, 0,
- -1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 5, 7, 5,
- 5, 5, 5, 5, 5, 5, 5, 5,
- 5, -1, 7, 7, 7, 7, 7, 7,
- 7, 7, 7, 7, -1, -1, -1, -1,
- -1, -1, -1, 7, 7, 7, 7, 7,
- 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 7, 7, 7, -1, -1, -1,
- -1, 7, -1, 7, 7, 7, 7, 7,
- 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 7, 7, 7,
- };
-
- LLTYPE1 _Dlextab[] =
- {
- 10, 10, 1, 10, 3, 10, 5, 10,
- 7, 7,
- };
-
- LL16BIT _Blextab[] =
- {
- 0, 2, 0, 75, 0, 87, 2, 98,
- 0, 0, 0,
- };
-
- struct lextab lextab = {
- 10, /* Highest state */
- _Dlextab, /* --> "Default state" table */
- _Nlextab, /* --> "Next state" table */
- _Clextab, /* --> "Check value" table */
- _Blextab, /* --> "Base" table */
- 220, /* Index of last entry in "next" */
- _lmovb, /* --> Byte-SHORTINT move routine */
- _Flextab, /* --> "Final state" table */
- _Alextab, /* --> Action routine */
-
- NULL, /* Look-ahead vector */
- 0, /* No Ignore class */
- 0, /* No Break class */
- 0, /* No Illegal class */
- };
-
- #ifndef LLBUFSIZE
- #define LLBUFSIZE 256
- #endif
-
-
- /* Standard I/O selected */
- FILE * lexin;
-
- llstin()
- {
- if(lexin == NULL)
- lexin = stdin;
- if(_tabp == NULL)
- lexswitch(&lextab);
- llbuf = calloc(LLBUFSIZE,sizeof(char));
- llbufsize = LLBUFSIZE;
- llinit();
- }
-
-